<?php

namespace App\Http\Controllers\Admin;

use App\Http\Model\Admin\Property;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class PropertyController extends Controller
{

    /**
     * 商品属性列表
     */
    public function property_list()
    {

        //商品属性表与商品分类表关联查询
        $data = DB::table('property')
            ->leftJoin('classify','property.c_id','=','classify.c_id')
            ->get();
        $count = DB::table('property')->count();
        return view('Admin/Property/property_list')->with('data',$data)->with('count',$count);
    }

    /**
     * 添加商品属性
     */

    public function property_add(Request $request)
    {
        //获取请求方式
        $res = $request->method();
        //如果是get请求方式,展示静态页面
        if($res == 'GET')
        {
            $data = DB::table('classify')->get();
            return view('Admin/Property/property_add')->with('data',$data);
        }
        if($res == 'POST')
        {
            $data = $request->input();
            //对ajax发送过来的数据作出判断
            if(empty($data['c_id']) || empty($data['p_name']))
            {
                return ['status'=>0,'info'=>'数据信息有误'];
            }
            if(mb_strlen($data['p_name'])<1 || mb_strlen($data['p_name'])>10)
            {
                return ['status'=>0,'info'=>'数据信息有误'];
            }
            //去重验证
            $res = DB::table('property')->select('p_name')->where(['p_name'=>$data['p_name'],'c_id'=>$data['c_id']])->first();
            if($res)
            {
                return ['status'=>0,'info'=>'该属性名称已经存在'];
            }else{
                //获取数据插入数据库
                $res = DB::table('property')->insert([
                    'c_id'=>$data['c_id'],
                    'p_name'=>$data['p_name']
                ]);
                if(!$res)
                {
                    return ['status'=>0,'info'=>'数据上传失败'];
                }else{
                    return ['status'=>1,'info'=>'上传成功'];
                }
            }
        }

    }

    /**
     * 添加商品属性值
     */
    public function property_value_add(Request $request,$p_id)
    {
        $res = $request->method();
        if($res == 'GET')
        {
            return view('Admin/Property/property_value_add');
        }

        if($res == 'POST')
        {
            $data = $request->input();
            //to do 数据验证
            if(empty($p_id))
            {
                return ['status'=>0,'info'=>'非法操作'];
            }
            if(empty($data['p_value']))
            {
                return ['status'=>0,'info'=>'数据信息不能为空'];
            }
            if(mb_strlen($data['p_value'])<1 || mb_strlen($data['p_value'])>10)
            {
                return ['status'=>0,'info'=>'数据信息有误'];
            }
            if(empty($data['price']))
            {
                $data['price'] = 0;
            }
            // to do 去重验证
            $res = DB::table('property_value')->select('p_value')->where(['p_value'=>$data['p_value'],'p_id'=>$p_id])->first();
            if($res)
            {
                return ['status'=>0,'info'=>'该属性值已经存在'];
            }
            //插入数据
            $res1 = DB::table('property_value')->insert([
               'p_id'=>$p_id,
                'p_value'=>$data['p_value'],
                'price'=>$data['price'],
            ]);
            if(!$res1)
            {
                return ['status'=>0,'info'=>'数据添加失败'];
            }else{
                return ['status'=>1,'info'=>'添加成功'];
            }
        }
    }
    /**
     * 属性值列表
     */
    public function property_value_list($p_id)
    {
        $data = DB::table('property_value')->where(['p_id'=>$p_id])->get();
        $count = DB::table('property_value')->where(['p_id'=>$p_id])->count();
        return view('Admin/Property/property_value_list')->with('data',$data)->with('count',$count);
    }

    /**
     * 修改商品属性
     */
    public function property_update(Request $request,$p_id,$c_id)
    {
        $res = $request->method();
        if($res == 'GET')
        {
            $p_data = DB::table('property')->where(['p_id'=>$p_id])->get();
            $c_data = DB::table('classify')->where(['c_id'=>$c_id])->get();
            return view('Admin/Property/property_update')->with('p_data',$p_data)->with('c_data',$c_data);
        }
        if($res == 'POST')
        {
            $data = $request->input();
            // 数据验证
            if(empty($p_id) || empty($c_id))
            {
                return ['status'=>0,'info'=>'非法操作'];
            }
            if(mb_strlen($data['p_name'])<1 || mb_strlen($data['p_name'])>10)
            {
                return ['status'=>0,'info'=>'数据信息填写有误'];
            }
            //去重
            $res1 = DB::table('property')->select('p_name')->where(['p_name'=>$data['p_name']])->first();
            if($res1)
            {
                return ['status'=>0,'info'=>'该属性名称已经存在'];
            }
            $res = DB::table('property')->where(['c_id'=>$c_id,'p_id'=>$p_id])->update(['p_name'=>$data['p_name']]);
            if($res)
            {
                return ['status'=>1,'info'=>'更改成功'];
            }else{
                return ['status'=>0,'info'=>'更改失败'];
            }

        }

    }
    /**
     * 删除商品属性
     */
    public function property_delete(Request $request,$p_id)
    {
        if(empty($p_id))
        {
            return ['status'=>0,'info'=>'非法操作'];
        }
        //验证属性下面是否还有属性值
        $p_data = DB::table('property_value')->select('p_value')->where(['p_id'=>$p_id])->get();
        if($p_data)
        {
            return ['status'=>0,'info'=>'该属性下还有属性值,无法删除'];
        }
        $res = DB::table('property')->where(['p_id'=>$p_id])->delete();
        if($res)
        {
            return ['status'=>1,'info'=>'删除成功'];
        }else{
            return  ['status'=>0,'info'=>'删除失败'];
        }
    }

    /**
     * 修改商品属性值
     */
    public function property_value_update(Request $request,$p_id,$p_value)
    {
        $res = $request->method();
        if($res == 'GET')
        {
            $p_data = DB::table('property_value')->where(['p_id'=>$p_id,'p_value'=>$p_value])->get();
            return view('Admin/Property/property_value_update')->with('p_data',$p_data);
        }

        if($res == 'POST')
        {
            //接收ajax数据
            $data = $request->input();
            //数据验证
            if(empty($p_id))
            {
                return ['status'=>0,'info'=>'非法操作'];
            }
            if(empty($data['p_value']))
            {
                return ['status'=>0,'info'=>'数据信息不能为空'];
            }
            if(mb_strlen($data['p_value'])<1 || mb_strlen($data['p_value'])>10)
            {
                return ['status'=>0,'info'=>'数据信息有误'];
            }
            if(empty($data['price']))
            {
                $data['price'] = 0;
            }
            // to do 去重验证
            $res = DB::table('property_value')->select('p_value')->where(['p_value'=>$data['p_value'],'p_id'=>$p_id])->first();
            if($res)
            {
                return ['status'=>0,'info'=>'该属性值已经存在'];
            }
            //更改数据
            $res1 = DB::table('property_value')->where(['p_id'=>$p_id,'p_value'=>$p_value])->update([
                'p_value'=>$data['p_value'],
                'price'=>$data['price'],
            ]);
            if(!$res1)
            {
                return ['status'=>0,'info'=>'数据更新失败'];
            }else{
                return ['status'=>1,'info'=>'更新成功'];
            }

        }

    }

    /**
     * 移除商品属性值
     */
    public function property_value_delete(Request $request,$p_id,$p_value)
    {
        if(empty($p_id) || empty($p_value))
        {
            return '非法操作';
        }
        $res = DB::table('property_value')->where(['p_id'=>$p_id,'p_value'=>$p_value])->delete();
        if($res)
        {
            return '删除成功';
        }else{
            return  '删除失败';
        }
    }
}
